home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 46
/
Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso
/
-in_the_mag-
/
reader_requests
/
pdflib
/
bindings
/
tcl
/
pdfclock.tcl
< prev
Wrap
Text File
|
1999-09-16
|
2KB
|
106 lines
#!/usr/local/bin/tclsh
# PDFlib client: pdfclock example in Tcl
# (C) Thomas Merz 1998
# simple loading the shared-library:
load ./pdflib.so
# using pdflib as package:
# lappend is unnecessary if installed at some right place
lappend auto_path .
package require pdflib
# doesn't yet work
#namespace import pdflib::*
set RADIUS 200.0
set MARGIN 20.0
set fp [fopen pdfclock.pdf w]
set ip [PDF_get_info]
PDF_info_Creator_set $ip "pdfclock.tcl"
PDF_info_Author_set $ip "Thomas Merz"
PDF_info_Title_set $ip "PDF clock (Tcl)"
set p [PDF_open $fp $ip]
PDF_begin_page $p [expr 2 * ($RADIUS + $MARGIN)] [expr 2 * ($RADIUS + $MARGIN)]
PDF_set_transition $p trans_wipe
PDF_set_duration $p 0.5
PDF_translate $p [expr $RADIUS + $MARGIN] [expr $RADIUS + $MARGIN]
PDF_setrgbcolor $p 0.0 0.0 1.0
PDF_save $p
# minute strokes
PDF_setlinewidth $p 2.0
for {set alpha 0} {$alpha < 360} {set alpha [expr $alpha + 6]} {
PDF_rotate $p 6.0
PDF_moveto $p $RADIUS 0.0
PDF_lineto $p [expr $RADIUS-$MARGIN/3] 0.0
PDF_stroke $p
}
PDF_restore $p
PDF_save $p
# 5 minute strokes
PDF_setlinewidth $p 3.0
for {set alpha 0} {$alpha < 360} {set alpha [expr $alpha + 30]} {
PDF_rotate $p 30.0
PDF_moveto $p $RADIUS 0.0
PDF_lineto $p [expr $RADIUS-$MARGIN] 0.0
PDF_stroke $p
}
# HACK. How to translate this into Tcl?
#time(&timer)
#ltime = *localtime(&timer)
set tm_hour 16
set tm_min 20
set tm_sec 46
# draw hour hand
PDF_save $p
PDF_rotate $p [expr -(($tm_min/60.0) + $tm_hour - 3.0) * 30.0]
PDF_moveto $p [expr -$RADIUS/10] [expr -$RADIUS/20]
PDF_lineto $p [expr $RADIUS/2] 0.0
PDF_lineto $p [expr -$RADIUS/10] [expr $RADIUS/20]
PDF_closepath $p
PDF_fill $p
PDF_restore $p
# draw minute hand
PDF_save $p
PDF_rotate $p [expr -(($tm_sec/60.0) + $tm_min - 15.0) * 6.0]
PDF_moveto $p [expr -$RADIUS/10] [expr -$RADIUS/20]
PDF_lineto $p [expr $RADIUS * 0.8] 0.0
PDF_lineto $p [expr -$RADIUS/10] [expr $RADIUS/20]
PDF_closepath $p
PDF_fill $p
PDF_restore $p
# draw second hand
PDF_setrgbcolor $p 1.0 0.0 0.0
PDF_setlinewidth $p 2
PDF_save $p
PDF_rotate $p [expr -(($tm_sec - 15.0) * 6.0)]
PDF_moveto $p [expr -$RADIUS/5] 0.0
PDF_lineto $p $RADIUS 0.0
PDF_stroke $p
PDF_restore $p
# draw little circle at center
PDF_circle $p 0 0 [expr $RADIUS/30]
PDF_fill $p
PDF_restore $p
PDF_end_page $p
PDF_close $p